function salvar(){
	
	run_waitMe();
	
	limparMensagem();
	desabilitaBotoes();
	
	$.ajax({
        url:  basepath+"admin/cliente/salvar",
        data: $('#formCadastrarCliente').serialize(),
        type: 'POST',
        async: false,
        success: function(retorno){
        	
        	stop_waitMe();
        	
        	var obj = jQuery.parseJSON( retorno );
        	
    		if (obj.sucesso == true) {
    			// Creating cookie
    			$.cookie('mensagem', 'cadastrar', { path: '/' });  
    			
    			//Redirecionando para a tela de pesquisa
    			window.parent.location = basepath+"admin/cliente";
    		}else{
    			habilitaBotoes();
    			
    			//Rola a página para cima
    			$('html, body').animate({ scrollTop: 0 }, 'slow');
    			
    			// Mostra mensagem
    			$("#mensagem").show();
    			$("#mensagem").prepend('<div class="row alert '+obj.tipoMensagem+' alert-dismissible" role="alert"><button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>'+obj.mensagem+'</div>');
    		}
        },
        error: function(XMLHttpRequest, textStatus, errorThrown) {
        	stop_waitMe();
        	
        	habilitaBotoes();
        	
        	//Rola a página para cima
    		$('html, body').animate({ scrollTop: 0 }, 'slow');
        	
    		// Mostra mensagem
			$("#mensagem").show();
			$("#mensagem").prepend('<div class="row alert alert-danger alert-dismissible" role="alert"><button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>Ocorreu um erro. Tente novamente mais tarde!</div>');
        }
    });
	
}

function formCadastrarCliente() {
	
	$('#formCadastrarCliente').formValidation({
		framework: 'bootstrap',
        icon: {
            valid: 'glyphicon glyphicon-ok',
            invalid: 'glyphicon glyphicon-remove',
            validating: 'glyphicon glyphicon-refresh'
        },
        button: {
		    // The disabled class
		    disabled: ''
		},
        fields : {
        	nome : {
				validators : {
					notEmpty : {
						message : 'Nome deve ser informado.'
					}
				}
			},
			cpf: {
				verbose: false,
                validators: {
                	notEmpty : {
						message : 'CPF deve ser informado.'
					},
                    id: {
                        country: 'BR',
                        message: 'CPF inválido'
                    },
                    remote: {
                    	message : 'CPF já cadastrado! Por favor informe outro.',
                    	url: basepath+"admin/cliente/validaCpfDisponivel",
                     	data: {
                            cpf: 'cpf'
                     	},
                     	type: 'POST'
                    }
                }
            },
            login : {
				verbose: false,
				validators : {
					notEmpty : {
						message : 'Login deve ser informado.'
					},
					stringLength: {
	                    min: 3,
	                    message: 'Login deve conter no minímo 3 caracteres.'
	                },
	                regexp: {
	                    regexp: /^[a-zA-Z0-9_\.]+$/,
	                    message: 'Caracter especial inválido.'
	                },
	                remote: {
	                	message : 'Login já cadastrado! Por favor informe outro.',
	                	url: basepath+"admin/cliente/validaLoginDisponivel",
	                 	data: {
	                        login: 'login'
	                 	},
	                 	type: 'POST'
	                }
				}
			},
			email : {
				verbose: false,
				validators : {
					notEmpty : {
						message : 'Email deve ser informado.'
					},
					emailAddress: {
						message: 'Email inválido.'
					},
					remote: {
	                	message : 'Email já cadastrado! Por favor informe outro.',
	                	url: basepath+"admin/cliente/validaEmailDisponivel",
	                 	data: {
	                        email: 'email'
	                 	},
	                 	type: 'POST'
	                }
				}
			},
			perfil: {
                validators: {
                	notEmpty : {
						message : 'Perfil deve ser selecionado.'
					}
                }
            }
		}
	})	
	.on('success.form.fv', function(e) {
		// Prevent form submission		
        e.preventDefault();
        
		salvar();
    });
}

function limpaCampo(){
	$('#formCadastrarCliente').each (function(){
	  this.reset();
	});
	
	$("#perfil").select2("val", "");
}

function limparForm(){
	$('#formCadastrarCliente').data('formValidation').resetForm();
}

function desabilitaBotoes(){
	// Desabilita os botões
	$("#buttonSalvar").attr("disabled", "disabled");
	$("#buttonVoltar").attr("disabled", "disabled");
}

function habilitaBotoes(){
	// Habilita o botão novamente
	$("#buttonSalvar").removeAttr("disabled");
	$("#buttonVoltar").removeAttr("disabled");
}

function limparMensagem(){
	// Limpando dados da mensagem
	$("#mensagem").hide();
	$("#mensagem").html("");
}

function inicializandoComponentes(){
	
	var today = dataAtual();
	
	$('#data-calendario .input-group.date').datepicker({
		endDate: today, 
        startView: 2,
        todayBtn: "linked",
        keyboardNavigation: false,
        forceParse: false,
        todayHighlight: true,
        autoclose: true
    });
	
	 var SPMaskBehavior = function (val) {
		 return val.replace(/\D/g, '').length === 11 ? '(00) 00000-0000' : '(00) 0000-00009';
	 },
	 spOptions = {
		onKeyPress: function(val, e, field, options) {
			field.mask(SPMaskBehavior.apply({}, arguments), options);
	    }
	 };

	 $('#telefone').mask(SPMaskBehavior, spOptions);
	 $('#celular').mask(SPMaskBehavior, spOptions);
	 $('#cpf').mask('999.999.999-99');
	
	 $('.i-checks').iCheck({
         checkboxClass: 'icheckbox_square-green',
         radioClass: 'iradio_square-green',
         labelHover: false,
         cursor: true
    });
	
	$('#fisica').iCheck('check');
	
	$("#buttonVoltar").bind('click',function(e) {
		// Prevent form submission
        e.preventDefault();
        
        window.parent.location = basepath+"admin/cliente";
	});	
	
}

function init() {
	inicializandoComponentes();
	formCadastrarCliente();
}

$(document).ready(init);